home *** CD-ROM | disk | FTP | other *** search
/ Adephia Powerlink / AdephiaPowerlink-030102.iso / mac / launchVT.dxr / 00004_Button Group.ls < prev    next >
Encoding:
Text File  |  2001-03-30  |  9.1 KB  |  271 lines

  1. property spriteNum, mySprite, myMember, getPDLError, myStandardMember, myRolloverMember, myMouseDownMember, myDisabledMember, myMouseDownSound, myMouseUpSound, myActiveFlag, myXRayFlag, myMessageType, myMessage, theMouseWasUp, myMouseDown, myRollover, mySubscribersList
  2.  
  3. on beginSprite me
  4.   Initialize(me)
  5. end
  6.  
  7. on exitFrame me
  8.   if myActiveFlag then
  9.     CheckForRollover(me)
  10.   end if
  11. end
  12.  
  13. on endSprite me
  14.   call(#PushButton_ClosingDown, mySubscribersList, me, spriteNum, myMessage)
  15. end
  16.  
  17. on Initialize me
  18.   mySprite = sprite(me.spriteNum)
  19.   myMember = mySprite.member
  20.   if not voidp(getPDLError) then
  21.     ErrorAlert(me, #getPDL_Invalid, myMember.type)
  22.   end if
  23.   repeat while the last char in myMessage = SPACE
  24.     delete char -30000 of myMessage
  25.   end repeat
  26.   if not ["do", "no action"].getPos(myMessageType) then
  27.     if myMessage contains SPACE then
  28.       ErrorAlert(me, #spaceInMessage, myMessage)
  29.     else
  30.       myMessage = symbol(myMessage)
  31.     end if
  32.   end if
  33.   myActiveFlag = myActiveFlag = #Active
  34.   myXRayFlag = myXRayFlag = "let all mouse events through"
  35.   myStandardMember = value(myStandardMember)
  36.   myRolloverMember = value(myRolloverMember)
  37.   myMouseDownMember = value(myMouseDownMember)
  38.   myDisabledMember = value(myDisabledMember)
  39.   myMouseDownSound = value(myMouseDownSound)
  40.   myMouseUpSound = value(myMouseUpSound)
  41.   if myActiveFlag then
  42.     myMember = myStandardMember
  43.     mySprite.member = myMember
  44.   else
  45.     myMember = myDisabledMember
  46.     mySprite.member = myMember
  47.   end if
  48.   mySubscribersList = []
  49.   sendAllSprites(#PushButton_OpenForBusiness, mySubscribersList, me, spriteNum, myMessage)
  50. end
  51.  
  52. on CheckForRollover me
  53.   mouseOverMe = rollOver(spriteNum)
  54.   if mouseOverMe then
  55.     if not myXRayFlag then
  56.       mouseOverMe = the mouseMember = myMember
  57.     end if
  58.   end if
  59.   if myRollover = mouseOverMe then
  60.     if theMouseWasUp = the mouseUp then
  61.       exit
  62.     else
  63.       theMouseWasUp = the mouseUp
  64.       if mouseOverMe then
  65.         if the mouseUp then
  66.           if myMouseDown then
  67.             Activate(me)
  68.           else
  69.             myMember = myRolloverMember
  70.             mySprite.member = myMember
  71.           end if
  72.         else
  73.           clickOn(me)
  74.         end if
  75.       else
  76.         if the mouseUp then
  77.           if myMouseDown then
  78.             Disactivate(me)
  79.           end if
  80.         end if
  81.       end if
  82.     end if
  83.   else
  84.     myRollover = mouseOverMe
  85.     if myMouseDown then
  86.       if myRollover then
  87.         myMember = myMouseDownMember
  88.         mySprite.member = myMember
  89.       else
  90.         myMember = myStandardMember
  91.         mySprite.member = myMember
  92.       end if
  93.     else
  94.       if not (the mouseDown) and myRollover then
  95.         myMember = myRolloverMember
  96.         mySprite.member = myMember
  97.       else
  98.         myMember = myStandardMember
  99.         mySprite.member = myMember
  100.       end if
  101.     end if
  102.   end if
  103. end
  104.  
  105. on clickOn me
  106.   myMouseDown = 1
  107.   myMember = myMouseDownMember
  108.   mySprite.member = myMember
  109.   if not voidp(myMouseDownSound) then
  110.     puppetSound(myMouseDownSound)
  111.   end if
  112.   updateStage()
  113. end
  114.  
  115. on Activate me
  116.   myMouseDown = 0
  117.   theMouseWasUp = 0
  118.   myMember = myStandardMember
  119.   mySprite.member = myMember
  120.   if not voidp(myMouseUpSound) then
  121.     puppetSound(myMouseUpSound)
  122.   end if
  123.   updateStage()
  124.   case myMessageType of
  125.     "do":
  126.       do(myMessage)
  127.     "sendAllSprites":
  128.       sendAllSprites(myMessage, me, spriteNum)
  129.     "call the actorList":
  130.       call(myMessage, the actorList, me, spriteNum)
  131.   end case
  132.   call(#PushButton_Activated, mySubscribersList, me, spriteNum, myMessage)
  133. end
  134.  
  135. on Disactivate me
  136.   myMouseDown = 0
  137.   myMember = myStandardMember
  138.   mySprite.member = myMember
  139. end
  140.  
  141. on PushButton_ToggleActive me, trueOrFalse
  142.   if voidp(trueOrFalse) then
  143.     myActiveFlag = not myActiveFlag
  144.   else
  145.     case ilk(trueOrFalse) of
  146.       #integer:
  147.         myActiveFlag = trueOrFalse <> 0
  148.       otherwise:
  149.         return #invalidTypeError
  150.     end case
  151.   end if
  152.   if myActiveFlag then
  153.     myMember = myStandardMember
  154.     mySprite.member = myMember
  155.     call(#PushButton_Enabled, mySubscribersList, me, spriteNum, myMessage)
  156.   else
  157.     myMember = myDisabledMember
  158.     mySprite.member = myMember
  159.     call(#PushButton_Disabled, mySubscribersList, me, spriteNum, myMessage)
  160.   end if
  161. end
  162.  
  163. on PushButton_GetReference me, theList
  164.   case ilk(theList) of
  165.     #list:
  166.       theList.append(me)
  167.     #propList:
  168.       theList.addProp(me.spriteNum, me)
  169.     otherwise:
  170.       return me
  171.   end case
  172.   return theList
  173. end
  174.  
  175. on PushButton_Subscribe me, callingBehavior, theMessage
  176.   if not voidp(theMessage) then
  177.     if theMessage <> myMessage then
  178.       exit
  179.     end if
  180.   end if
  181.   if mySubscribersList.getPos(callingBehavior) then
  182.     exit
  183.   else
  184.     if objectp(callingBehavior) then
  185.       mySubscribersList.append(callingBehavior)
  186.       return me
  187.     end if
  188.   end if
  189. end
  190.  
  191. on PushButton_Unsubscribe me, callingBehavior
  192.   mySubscribersList.deleteOne(callingBehavior)
  193. end
  194.  
  195. on ErrorAlert me, theError, Data
  196.   case theError of
  197.     #getPDLError:
  198.       alert("Error: This behavior works only with the following members types:  " & PermittedMemberTypes(me) & RETURN & RETURN & "Hit OK and then delete this behavior from the sprite.  See the Help system for details on deleting behaviors.")
  199.       if the optionDown then
  200.         return [#getPDLError: [#comment: "ERROR:   Wrong member type.   Click 'Cancel'.", #format: #string, #range: [EMPTY], #default: EMPTY]]
  201.       end if
  202.     otherwise:
  203.       case theError of
  204.         #invalidMemberType:
  205.           if the runMode = "Author" then
  206.             behaviorName = string(me)
  207.             delete word 1 of behaviorName
  208.             delete char -30001 of behaviorName
  209.             delete char -30001 of behaviorName
  210.             alert("BEHAVIOR ERROR: Frame " & the frame & ", Sprite " & me.spriteNum & RETURN & RETURN & "Behavior " & behaviorName & " only works with Field and Text members." & RETURN & RETURN & "Current member type = #" & Data)
  211.           end if
  212.           abort()
  213.         #spaceInMessage:
  214.           if the runMode = "Author" then
  215.             alert("BEHAVIOR ERROR: Frame " & the frame & ", Sprite " & me.spriteNum & RETURN & "Behavior " & behaviorName & RETURN & RETURN & "Message includes spaces: " & QUOTE & Data & QUOTE & RETURN & "Only the first word will be used in sendAllSprite calls:" & RETURN & RETURN & "sendAllSprites (#" & Data.word[1] & ", <me>, " & spriteNum & ")")
  216.           end if
  217.       end case
  218.   end case
  219. end
  220.  
  221. on getPropertyDescriptionList me
  222.   if not (the currentSpriteNum) then
  223.     exit
  224.   end if
  225.   theMember = sprite(the currentSpriteNum).member
  226.   memberType = theMember.type
  227.   permittedTypes = PermittedMemberTypes(me)
  228.   if not permittedTypes.getPos(memberType) then
  229.     return ErrorAlert(me, #getPDLError, permittedTypes)
  230.   end if
  231.   theMemberNum = theMember.number
  232.   suitableMembersList = GetSuitableMembers(me, permittedTypes)
  233.   descriptionList = [#myStandardMember: [#comment: "- GRAPHICS - Standard member for sprite:", #format: #member, #range: suitableMembersList, #default: theMember], #myRolloverMember: [#comment: "Rollover member:", #format: #member, #range: suitableMembersList, #default: member(theMemberNum + 1)], #myMouseDownMember: [#comment: "MouseDown member:", #format: #member, #range: suitableMembersList, #default: member(theMemberNum + 2)], #myDisabledMember: [#comment: "Disabled member:", #format: #member, #range: suitableMembersList, #default: member(theMemberNum + 3)]]
  234.   soundsAvailable = GetSuitableMembers(me, [#sound])
  235.   if soundsAvailable.count() then
  236.     soundsAvailable.addAt(1, #none)
  237.     descriptionList.addProp(#myMouseDownSound, [#comment: "- SOUNDS - Sound to play on mouseDown:", #format: #sound, #range: soundsAvailable, #default: member(theMemberNum + 4)])
  238.     descriptionList.addProp(#myMouseUpSound, [#comment: "Sound to play on mouseUp:", #format: #sound, #range: soundsAvailable, #default: member(theMemberNum + 5)])
  239.   end if
  240.   descriptionList.addProp(#myActiveFlag, [#comment: "- INTERACTION - Button is initially", #format: #symbol, #range: [#Active, #inactive], #default: #Active])
  241.   descriptionList.addProp(#myXRayFlag, [#comment: "Sprites which cover the button", #format: #string, #range: ["block all mouse events", "let all mouse events through"], #default: 0])
  242.   descriptionList.addProp(#myMessageType, [#comment: "Action on mouseUp:", #format: #string, #range: ["do", "sendAllSprites", "call the actorList", "no action"], #default: "sendAllSprites"])
  243.   descriptionList.addProp(#myMessage, [#comment: EMPTY, #format: #string, #default: "YourCustomMessage"])
  244.   return descriptionList
  245. end
  246.  
  247. on GetSuitableMembers me, permittedTypes
  248.   cursor(4)
  249.   suitableMembersList = []
  250.   maxCastLib = the number of castLibs
  251.   repeat with theCastLib = 1 to maxCastLib
  252.     maxMember = the number of castMembers of castLib theCastLib
  253.     repeat with memberNumber = 1 to maxMember
  254.       theMember = member(memberNumber, theCastLib)
  255.       if permittedTypes.getPos(theMember.type) then
  256.         if theMember.name = EMPTY then
  257.           suitableMembersList.append(theMember)
  258.           next repeat
  259.         end if
  260.         suitableMembersList.append(theMember.name)
  261.       end if
  262.     end repeat
  263.   end repeat
  264.   cursor(-1)
  265.   return suitableMembersList
  266. end
  267.  
  268. on PermittedMemberTypes me
  269.   return [#bitmap, #filmLoop, #flash, #movie, #picture, #quickTimeMedia, #shape, #vectorShape]
  270. end
  271.